---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Upgrade environment/inventory configuration
  hosts: localhost
  connection: local
  gather_facts: false
  user: root
  vars:
      upgrade_scripts: "{{ playbook_dir }}/../scripts"
      repo_root_dir: "{{ playbook_dir }}/../../../"
      source_series: "pike"
      ansible_python_interpreter: "/usr/bin/python"
  tasks:
      - name: Create an old copy of openstack_deploy
        copy:
          src: "/etc/openstack_deploy/"
          dest: "/etc/openstack_deploy.{{ source_series | upper }}/"
          force: no

      - name: Check if there is a user-space env.d directory
        stat:
          path: "/etc/openstack_deploy/env.d"
        register: _envd_dir

      - block:

        - name: Retrieve differences
          shell: rsync -avun "{{ repo_root_dir }}/inventory/env.d/" "/etc/openstack_deploy/env.d/" | grep "yml$"
          failed_when: false
          register: diff_result

        - name: Copy new env.d files into place
          copy:
              src: "{{ repo_root_dir }}/inventory/env.d/{{ item }}"
              dest: "/etc/openstack_deploy/env.d/{{ item }}"
              force: no
          with_items:
              - "{{ diff_result.stdout_lines }}"
          when: diff_result.stdout != ""

        - name: Check result for emptiness
          debug: msg="All new env.d files are placed in the stock repo. No new changes"
          when: diff_result.stdout == ""

        when: _envd_dir.stat.exists | bool

      - name: Update OpenStack variable names
        command: "{{ upgrade_scripts }}/migrate_openstack_vars.py {{ item }} {{ (item | basename)[:-4] }}"
        args:
            creates: "/etc/openstack_deploy.{{ source_series | upper }}/VARS_MIGRATED_{{ (item | basename)[:-4] }}"
        with_fileglob:
          - "/etc/openstack_deploy/user_*.yml"

      - name: Write vars required for upgrade
        lineinfile:
          dest: /etc/openstack_deploy/user_variables.yml
          regexp: "{{ item.regexp | default('^' + item.key) }}"
          line: "{{ item.key }}: {{ item.value }}"
          backrefs: "{{ item.backrefs | default('no') }}"
          state: present
        with_items:
          # Replace "10.0" with "10.1" within galera_repo_url
          - key: "galera_repo_url"
            regexp: '^galera_repo_url: (https?://.*10)\.0(.*)$'
            value: '\1.1\2'
            backrefs: yes
          # Replace "10.0" with "10.1" within galera_client_apt_repo_url
          - key: "galera_client_apt_repo_url"
            regexp: '^galera_client_apt_repo_url: (https?://.*10)\.0(.*)$'
            value: '\1.1\2'
            backrefs: yes
          # Replace "10.0" with "10.1" within galera_client_repo_url
          - key: "galera_client_repo_url"
            regexp: '^galera_client_repo_url: (https?://.*10)\.0(.*)$'
            value: '\1.1\2'
            backrefs: yes
